﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ControllerLag;
using System.Collections;
using Model;


namespace Projekt_1
{
    public partial class OrdreGUI : Form
    {
        private Controller controller;

        public OrdreGUI(Controller controller)
        {
            InitializeComponent();
			this.controller = controller;
        }

        private void btnSøg_Click(object sender, EventArgs e)
        {
            if (txtIndtastOrdre.Text != "")
            {
                Model.Ordre enOrdre = controller.FindOrdre(int.Parse(txtIndtastOrdre.Text));

                dgvSøgeresults.Rows.Add(enOrdre.Ordrenr,enOrdre.HomeParty.Værtinde, enOrdre.Dato);

            }
            else
            {
            List<Model.Ordre> ordreListe = controller.FindOrdredato(dtpStartDato.Value, dtpSlutDato.Value);

            foreach (Model.Ordre ordre in ordreListe)
            {
                dgvSøgeresults.Rows.Add(ordre.Ordrenr, ordre.HomeParty.Værtinde, ordre.Dato);
            }
            }
            NormalTilstand();
        }

        private void btnLuk_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnOpretNyOrdre_Click(object sender, EventArgs e)
        {
            OpretNyOrdreTilstand();
        }

        #region *** Tilstandsstyring ***

        private void NormalTilstand()
        {
            gbNyOrdre.Enabled = false;
            gbS0g.Enabled = false;
            gbS0gRestultat.Enabled = true;

            btnSletOrdreStyring.Enabled = true;
            btnLuk.Enabled = true;
            btnSletOrdre.Enabled = false;
            btnS0gEfterOrdre.Enabled = true;
            btnOpretNyOrdre.Enabled = true;
            btnAnullerSlet.Enabled = false;
        }

        private void OpretNyOrdreTilstand()
        {
            gbNyOrdre.Enabled = true;
            gbS0g.Enabled = false;
            gbS0gRestultat.Enabled = true;

            btnSletOrdreStyring.Enabled = false;
            btnLuk.Enabled = false;
            btnSletOrdre.Enabled = false;
            btnS0gEfterOrdre.Enabled = false;
            btnOpretNyOrdre.Enabled = false;
            btnAnullerSlet.Enabled = false;
        }

        private void S0gOrdreTilstand()
        {
            gbNyOrdre.Enabled = false;
            gbS0g.Enabled = true;
            gbS0gRestultat.Enabled = true;

            btnSletOrdre.Enabled = false;
            btnLuk.Enabled = false;
            btnS0gEfterOrdre.Enabled = false;
            btnOpretNyOrdre.Enabled = false;
            btnAnullerSlet.Enabled = false;
            btnSletOrdreStyring.Enabled = false;
        }

        private void SletTilstand()
        {
            gbNyOrdre.Enabled = false;
            gbS0g.Enabled = false;
            gbS0gRestultat.Enabled = true;

            btnSletOrdre.Enabled = true;
            btnLuk.Enabled = false;
            btnS0gEfterOrdre.Enabled = false;
            btnOpretNyOrdre.Enabled = false;
            btnAnullerSlet.Enabled = true;
            btnSletOrdreStyring.Enabled = false;
        }

        #endregion 

        private void btnSlet_Click(object sender, EventArgs e)
        {
            SletTilstand();
        }

        private void btnS0gEfterOrdre_Click(object sender, EventArgs e)
        {
            S0gOrdreTilstand();
        }

        private void btnNyOrdreAnuller_Click(object sender, EventArgs e)
        {
            NormalTilstand();
        }

        private void btnNyOrdreRegistrerOrdre_Click(object sender, EventArgs e)
        {
            if (controller.OpretOrdre(dtpNyOrdreDato.Value, (Homeparty)cboHomePartys.SelectedItem, int.Parse(txtsælgernr.Text)))
            {
                txtOrdrenr.Text = controller.HentOrdrenr().ToString();
            }
            else
            {
                MessageBox.Show("Ordren blev ikke oprettet", "Fejl", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnSletOrdre_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Er du sikker på, at du vil slette ordren?",
                                                "Vil du slette?",
                                                MessageBoxButtons.YesNo,
                                                MessageBoxIcon.Warning);

            if (res == DialogResult.Yes)
            {
                try
                {
                    controller.SletOrdre(Convert.ToInt32(dgvSøgeresults.SelectedCells[0].Value));
                }
                catch
                {
                    MessageBox.Show("Ulovlig Handling");
                }
            }
        }

		private void OrdreGUI_Load(object sender, EventArgs e)
		{
            NormalTilstand();
		}

        private void dtpNyOrdreDato_ValueChanged(object sender, EventArgs e)
        {
            cboHomePartys.Items.Clear();
            List<Homeparty> dummyListe = new List<Homeparty>();
            dummyListe = controller.FindHomeparty(dtpNyOrdreDato.Value);

            cboHomePartys.Items.AddRange(dummyListe.ToArray());
        }

        private void btnNyOrdreTilf0jDelordre_Click(object sender, EventArgs e)
        {

            try
            {
                FrmDelordreOpret form = new FrmDelordreOpret(controller, ((Homeparty)cboHomePartys.SelectedItem));
                form.ShowDialog();
            }
            catch
            {
                MessageBox.Show("Der er opstået en fejl");
            }
        }

        private void dgvSøgeresults_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btnSletOrdreStyring_Click(object sender, EventArgs e)
        {
            SletTilstand();
        }

        private void btnAnullerSlet_Click(object sender, EventArgs e)
        {
            NormalTilstand();
        }
    }
}
